fb3c48464d48ff6792bcac52b791d59b248a9818,src/org/exist/xquery/functions/xmldb/XMLDBSetResourcePermissions.java,XMLDBSetResourcePermissions,evalWithCollection,#Collection#Sequence[]#Sequence#,77

Before Change


            Resource res = collection.getResource(args[1].getStringValue());
            if (res != null) {
                UserManagementService ums = (UserManagementService) collection.getService("UserManagementService", "1.0");
                ums.setPermissions(res, new Permission(args[2].getStringValue(), args[3].getStringValue(), ((IntegerValue) args[4].convertTo(Type.INTEGER)).getInt()));
            } else {
                throw new XPathException(getASTNode(), "Unable to locate resource "+args[1].getStringValue());
            }

After Change


            if (res != null) {
                UserManagementService ums = (UserManagementService) collection.getService("UserManagementService", "1.0");
                String user = args[2].getStringValue();
                String group = args[3].getStringValue();
                int mode = ((IntegerValue) args[4].convertTo(Type.INTEGER)).getInt();
                
                if (null == user || 0 == user.length())
                    throw new XPathException(getASTNode(), "Needs a valid user name, not: "+user);
                if (null == group || 0 == group.length())
                    throw new XPathException(getASTNode(), "Needs a valid group name, not: "+group);
    
                // Must actually get a User object for the Permission...
                Permission p = new Permission(user, group, mode);
                User u = ums.getUser(user);
                if (null == u)
                    throw new XPathException(getASTNode(), "Needs a valid user name, not: "+user);
                p.setOwner(u);
                
                ums.setPermissions(res, p);